啟用專有編解碼器


預建 NW.js 二進位檔中支援的編解碼器

由於 NW.js 是基於 Chromium,因此媒體元件基本上是相同的。在預建 NW.js 中,支援下列編解碼器

- theora
- vorbis
- vp8 & vp9
- pcm_u8, pcm_s16le, pcm_s24le, pcm_f32le, pcm_s16be & pcm_s24be
- mp3 (v0.22.1+)

… 以及這些解復編器

- ogg
- matroska
- wav

在 NW.js 中啟用專有編解碼器

授權和專利費

使用 H.264 編解碼器時,您必須注意專利權利金和原始碼授權。如果您不了解授權限制和在應用程式中使用已取得專利的媒體格式,請諮詢律師。如需瞭解有關原始碼授權的更多資訊,請查看此處

警告

如果您沒有授權,使用以下提示或轉移到其他解決方案並不會讓您有資格重新分發編解碼器。

從社群取得 FFmpeg 二進位檔

在 Chromium 專案的最新版本中,FFmpeg 已變更為內建。因此,您無法再從官方 Chrome 發行版取得 FFmpeg DLL。不過,您可以從社群取得預先編譯的二進位檔。另一個替代方案是按照以下說明自行建置 FFmpeg。

在不建置 NW.js 的情況下建置 FFmpeg DLL

如果您使用的是預先建置的 NW.js,您只要重新建置 FFmpeg DLL 並取代預先建置的二進位檔中所附的 DLL 即可。相較於建置整個 NW.js(約 20G),這樣可以節省大量的下載大小(約 1G)。

步驟 1. 從 GitHub 下載自訂 Chromium 的 zip 套件。您可以在 https://github.com/nwjs/chromium.src/tags 中找到對應的版本。將 zip 套件解壓縮到本機資料夾中,例如 ~/nw。解壓縮的套件會包含一個子目錄。因此,原始碼資料夾位於 ~/nw/<子目錄名稱> 中。

步驟 2. 取得依賴項

由於您並未建置整個 NW.js,因此您必須手動取得以下依賴項。

  • 使用 DEPS 檔案中的對應提交,複製下列資料夾
    • buildtools
    • tools/gyp
    • third_party/yasm/sources/patched-yasm
    • third_party/ffmpeg
  • 透過下列方式下載 buildtools/<os> 中的 gn 工具
    download_from_google_storage --no_resume \
                                 --platform=<platform> \
                                 --no_auth \
                                 --bucket chromium-gn \
                                 -s buildtools/<os>/<gn-exe>.sha1
    
    • <平台>:Windows 的 win32;Mac 的 darwin;Linux 的 linux*
    • <os>:Windows 的 win;Mac 的 mac;Linux 的 linux64
    • <gn-exe>:Windows 的 gn.exe;Mac 和 Linux 的 gn
  • [Mac 和 Linux] 透過下列方式下載 third_party/llvm-build 中的 clang 工具
    python tools/clang/scripts/update.py --if-needed
    
  • [Linux] 透過下列方式下載 build/linux/*-sysroot 中的函式庫
    python build/linux/sysroot_scripts/install-sysroot.py --running-as-hook
    
  • [Mac] 透過下列方式下載 third_party/libc++-static 中的 libc++-static 函式庫
    download_from_google_storage --no_resume \
                                 --platform=darwin \
                                 --no_auth \
                                 --bucket chromium-libcpp \
                                 -s third_party/libc++-static/libc++.a.sha1
    

針對 Linux 開發人員

在進行下列指示之前,請先執行 build/install-build-deps.sh 以首次建置 FFmpeg DLL 或 NW.js。您只需執行一次。此腳本會自動為您安裝建置相依性。

步驟 3。取代 BUILD.gn

以下列內容取代原始碼根目錄中的 BUILD.gn

action("dummy") {
  deps = [
    "//third_party/ffmpeg"
  ]
  script = "dummy"
  outputs = ["$target_gen_dir/dummy.txt"]
}

步驟 4。使用 GN 工具產生 Ninja 檔案

cd path/to/nw/source/folder
gn gen //out/nw \
 --args='is_debug=false is_component_ffmpeg=true target_cpu="<target_cpu>" is_official_build=true ffmpeg_branding="Chrome"'

注意<target_cpu> 應設定為 x86x64,以進行 32 位元或 64 位元建置。

步驟 4。建置 ffmpeg DLL

ninja -C out/nw ffmpeg

您會在 out/nw 資料夾中找到 DLL。路徑和檔案名稱會因平台而異

  • Windows:ffmpeg.dll
  • Mac OS X:libffmpeg.dylib
  • Linux:lib/libffmpeg.so

步驟 5。將預建置 NW.js 中的捆綁 DLL 取代為您剛建置的 DLL。路徑和檔案名稱會因平台而異

  • Windows:ffmpeg.dll
  • Mac OS X:nwjs.app/Contents/Versions/<chromium-version>/nwjs Framework.framework/libffmpeg.dylib
  • Linux lib/libffmpeg.so

使用專有編解碼器建置完整的 NW.js

如果您不使用官方預建置的 NW.js,您可以按照下列指示建置已啟用專有編解碼器的完整 NW.js。請參閱 建置 NW.js 以取得每個步驟的詳細資料。

步驟 1。安裝先決條件並擷取 NW.js 的原始碼。請參閱 建置 NW.js 中的先決條件取得程式碼區段。

步驟 2。在您設定 GN 時,將 ffmpeg_branding 設定為 Chrome

步驟 3。再次重新產生 ninja 檔案。

步驟 4。重新建置 NW.js。